Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Godot iOS Plugin System #41269

Closed
wants to merge 7 commits into from
Closed

Conversation

cagdasc
Copy link
Contributor

@cagdasc cagdasc commented Aug 14, 2020

Mobile developers need to be 3rd-party libraries for improve their apps. Some of them are ads libraries, Facebook integration, game services etc. With this integration Android and iOS apps can be same.

At Godot, we can only create plugin for Android after 3.2.x, now with this proposal we can create plugin for iPhone and our games will run same features.

This is a draft PR. I will add signal feature.

Related with this proposal

@cagdasc
Copy link
Contributor Author

cagdasc commented Aug 15, 2020

@akien-mga @m4gr3d can you review?

@cagdasc cagdasc marked this pull request as ready for review August 16, 2020 10:34
@naithar
Copy link
Contributor

naithar commented Aug 16, 2020

Running clang-format -i <source-file> should help you fix source formatting issues :)

@cagdasc
Copy link
Contributor Author

cagdasc commented Aug 16, 2020

@naithar yes I will do it with last commit.

@jkb0o
Copy link
Contributor

jkb0o commented Aug 17, 2020

Looks like a solid piece of work, but... Actually, I do not see any problem to implement any third-party integrations using gdnative c++ API. It is possible since godotengine/godot-cpp#353. I've already use Appsflyer, Facebook, Firebase, Onesignal, Zendesk. Is this really needed?

Andoid modules look like a legacy as well, so we have android modules is not best argumentation.

@naithar
Copy link
Contributor

naithar commented Aug 17, 2020

Looks like a solid piece of work, but... Actually, I do not see any problem to implement any third-party integrations using gdnative c++ API. It is possible since godotengine/godot-cpp#353. I've already use Appsflyer, Facebook, Firebase, Onesignal, Zendesk. Is this really needed?

Andoid modules look like a legacy as well, so we have android modules is not best argumentation.

Well, GDNative doesn't give access to AppDelegate or any other platform specific code for iOS. Plugins should solve this (the other plugin system PR solved it by being actually modules that could be built separately from engine).

@jkb0o
Copy link
Contributor

jkb0o commented Aug 17, 2020

Well, GDNative doesn't give access to AppDelegate or any other platform specific code for iOS. Plugins should solve this (the other plugin system PR solved it by being actually modules that could be built separately from engine).

Addons can use Method Swizzling to overwrite AppDelegate methods. When you write a plugin using ObjectiveCPP there is no single point in iOS you couldn't access (I didn't meet any developing those addons). We just need better tutorials and examples with gdnative and ios.

@naithar
Copy link
Contributor

naithar commented Aug 17, 2020

When you write a plugin using ObjectiveCPP there is no single point in iOS you couldn't access (I didn't meet any developing those addons).

This #41230 allows plugin to directly use Godot's iOS platform code. And some wrappers could be done for this PR.
Method Swizzling is not really a good option and shouldn't be used lightly if at all.

@cagdasc
Copy link
Contributor Author

cagdasc commented Aug 17, 2020

I have added custom variable types for type check and tomorrow I will add MethodInfo like SignalInfo for type safety.

@cagdasc
Copy link
Contributor Author

cagdasc commented Aug 18, 2020

End of the development.

@cagdasc cagdasc closed this Aug 18, 2020
@akien-mga akien-mga modified the milestones: 4.0, 3.2 Aug 18, 2020
@paytonrules
Copy link

Why was this abruptly closed? It doesn't seem like the issue was settled, and this functionality would be useful for 3.2 users?

@akien-mga
Copy link
Member

It's superseded by #41230 and #41340.

@akien-mga akien-mga removed this from the 3.2 milestone Apr 20, 2021
@akien-mga akien-mga added this to the 3.3 milestone Apr 20, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants